var index;
var indexLoad;
var $table;
(function($){
    $.extend({
        table:{
            initTable:function(columns,url,idField){
                // 初始化表格
                if(idField==undefined){
                    idField = "id";
                }
                $table = $("#table");
                $table.bootstrapTable({
                    columns:columns,
                    url:url,
                    idField:idField,
                    locale:'zh-CN',
                    pagination:true,
                    pageNumber:1,
                    pageSize:10,
                    pageList:[4,5,6,10],
                    sidePagination:'server',
                    contentType:'application/x-www-form-urlencode',
                    queryParams:function(params){
                        params.pageNumber=this.pageNumber;
                        params.pageSize=this.pageSize;
                        var formArray = $("#searchForm").serializeArray();
                        for(var i=0;i<formArray.length;i++){
                            var obj = formArray[i];
                            var name = obj.name;
                            var value = obj.value;
                            params[name]=value;
                        }
                        console.info(params);
                        return params;
                    },
                    responseHandler:function(ret,xmlHttpRequest){
                        if(ret.status==200){
                            console.info(ret.data)
                            console.info({"data":ret.data.list,"totalRows":ret.data.total})
                            return {"rows":ret.data.list,"total":ret.data.total};
                        }
                    },
                    showColumns:true,
                    showToggle:true,
                    toolbar:"#toolbar"
                })
            },
            initTableGrid:function(columns,url,idField,treeShowField,parentIdField,rootParentId){
                $table = $("#table");
                $table.bootstrapTable({
                    url: url,// 异步请求地址
                    idField: idField,// 生命哪个字段是主键字段
                    showColumns: true,
                    toolbar:'#toolbar',
                    columns:columns,
                    treeShowField:treeShowField ,// 需要显示层级关系的列
                    parentIdField: parentIdField,// 指定parentID
                    rootParentId: rootParentId,// 指定根节点的parentID的值
                    responseHandler:function(ret){
                        return ret.data;
                    },
                    onPostBody: function() {
                        var columns = $table.bootstrapTable('getOptions').columns
                        if (columns && columns[0][1].visible) {
                            // 用于进行表格树化
                            $table.treegrid({
                                treeColumn: 0,
                                onChange: function() {
                                    $table.bootstrapTable('resetView')
                                }
                            })
                        }
                    }
                })
            },
            search:function(){
                console.info($table)
                $table.bootstrapTable('refresh');
            },
            reset:function(){
                document.getElementById("searchForm").reset();
                this.search();
            }
        },
        // jquery的封装
        operator:{
          get:function(url,callback){
              $.ajax({
                  url:url,
                  type:'GET',
                  dataType:'json',
                  async:false,
                  success:callback
              })
          },
          delete:function(url,callback){
              layer.confirm("确定是否删除选中数据",function(){
                  if(callback==undefined){
                      callback = function(ret){
                          if(ret){
                             layer.msg('删除成功',function(){
                                 layer.closeAll();
                                 $.table.search();
                             })

                          }else{
                              layer.msg('删除失败')
                          }
                      }
                  }
                  $.ajax({
                      url:url,
                      type:'DELETE',
                      dataType:'json',
                      beforeSend:function(XMLHttpRequest){
                          $.modal.loading();
                      },
                      success:callback
                  })

              })

          },
            post:function(url,data,callback){

                $.ajax({
                    url:url,
                    type:'POST',
                    dataType:'json',
                    data:data,
                    beforeSend:function(XMLHttpRequest){
                        $.modal.loading();
                    },
                    success:function(ret){
                        if(ret.data){
                            layer.msg('操作成功',function(){
                                layer.closeAll();
                            })

                        }else{
                            layer.msg('操作失败')
                        }
                        if(callback!=undefined){
                            callback(ret);
                        }

                    }
                })
                layer.close(indexLoad)
            },

            save:function(url,data,callback){

                $.ajax({
                    url:url,
                    type:'POST',
                    dataType:'json',
                    data:data,
                    beforeSend:function(XMLHttpRequest){
                        $.modal.loading();
                    },
                    success:function(ret){
                        if(ret.data){
                            layer.msg('操作成功',function(){
                                parent.$table.bootstrapTable('refresh');
                                parent.layer.closeAll();
                           })

                        }else{
                            layer.msg('操作失败')
                        }
                        if(callback!=undefined){
                            callback(ret);
                        }

                    }
                })
                layer.close(indexLoad)
            },
            deletes:function(url){
                // 不能传参，但是需要给后台传数组
                // 可以使用选择器  -- 当客户点击批量删除时，通过选择器选择到当前需要删除的checkbox
                // 选中需要删除的行
                var rows = $table.bootstrapTable('getSelections');
                if(rows.length==0){
                    layer.msg('请选择需要删除的数据');
                    return;
                }
                var ids=new Array();
                for(var i=0;i<rows.length;i++){
                    // 对象属性的获取方式
                    // a.属性名
                    // 如果属性名为变量  a.a  a[a]
                    ids.push(rows[i].id)
                    // ids+=checkedInput[i].value+",";
                }
                layer.confirm("确定需要删除选中的"+rows.length+"个数据吗？？",function(){
                    $.operator.post(url,{ids:ids},function(ret){
                        $table.search();
                    })
                })
            }
        },

        // 封装的都是弹出层的内容
        modal:{
           openWin:function(title,url,width,height){
               if(width==undefined){
                   width="800px";
               }
               if(height==undefined){
                   height = "600px";
               }
               index = layer.open({
                    type: 2, // 2代表加载的是iframe层
                    shift:2,
                    title: title, // 弹出层的标题
                    shadeClose: false, // 是否点击外层关闭
                    shade: false,// 遮罩层的透明度设置
                    maxmin: true, //开启最大化最小化按钮
                    area: [width, height],
                    content: url
                });
            },
            openWinFull:function(title,url){
                index = layer.open({
                    type: 2, // 2代表加载的是iframe层
                    shift:2,
                    title: title, // 弹出层的标题
                    shadeClose: false, // 是否点击外层关闭
                    shade: false,// 遮罩层的透明度设置
                    maxmin: true, //开启最大化最小化按钮
                    content: url
                });
                layer.full(index);
            },
            close:function(){
               layer.close(index);
            },
            loading:function(){
              indexLoad=layer.load(1, {
                    shade: [0.1,'#fff'] //0.1透明度的白色背景
                });

            }
        }
    })
})(jQuery);